<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
 * 数组函数
 * 
 * @author  : $Author: spike $
 * @date    : $Date: 2014-03-03 09:31:20 +0800 (一, 2014-03-03) $
 * @version : $Id: array_helper.php 39 2014-03-03 01:31:20Z spike $
 * @rev     : $Revision: 39 $
 */
// ------------------------------------------------------------------------

/**
 * [自定义字符串分割为数组]
 * @param  [string]  $delimiter    [分隔符]
 * @param  [string]  $str          [字符]
 * @param  [bool]    $ignore_empty [是否需要去空白]
 * @param  [string]  $arr_key      [数组的key]
 * @return [array]
 */
if (!function_exists('array_explode')) 
{
    function array_explode($delimiter, $str, $ignore_empty = TRUE, $arr_key = NULL)
    {
        $arr         = array();
        $deli_strlen = strlen($delimiter);
        if( ! ($deli_strlen>0) )
        {
            return $arr;
        }

        while($str && is_string($str)) 
        {
            $pos = strpos($str, $delimiter);
            if ($pos === false) 
            {
                if( $arr_key !== NULL )
                {
                    $arr[][$arr_key] = $str;
                }
                else
                {
                    $arr[] = $str;
                }
                $str = '';
            } 
            else 
            {
                $tmp = substr($str, 0, $pos);
                $str = substr($str, $pos + $deli_strlen);

                if( $ignore_empty === TRUE && (trim($tmp) == '' || $tmp === NULL))
                {
                    continue;
                }

                if( $arr_key !== NULL )
                {
                    $arr[][$arr_key] = $tmp;
                }
                else
                {
                    $arr[] = $tmp;
                }
            }
        }

        return $arr;

    }
}

/**
 * 
 * 返回数组某一个key的所有值
 * 
 * @param   [array]   array(0=>array('a'=>1,'b'=>2),1=>('a'=>2,'c'=>5))
 * @param   [string]  键名
 * @return  [array]   
 */
if (!function_exists('array_pick')) 
{
    function array_pick($items, $key, $unique = FALSE)
    {
        $output = array();
        if( ! is_array($items) || empty($key)) return $output;

        foreach ($items as $item) 
        {
            if(isset($item[$key]))
            {
                if( $unique === TRUE )
                {
                    if(! isset($output[$item[$key]]) )
                        $output[$item[$key]] = $item[$key];
                }
                else
                {
                    $output[] = $item[$key];
                }
            }
        }
        return $output;
    }
}

/**
 * 将2+维数组中某列的值作为key，将以数字为key的数组变换为key-value数组
 *
 * @param array $arr    input/out parameter
 * @param string $column
 */
if (!function_exists('array_change_key')) 
{
    function array_change_key(& $arr, $column, $unique = TRUE)
    {
        if(empty($arr))
        {
            return;
        }
        $res = array();
        foreach($arr as $k => $v)
        {
            if($unique === TRUE)
            {
                $res[$v[$column]] = $v;
            }
            else
            {
                $res[$v[$column]][] = $v;
            }
            
        }
        $arr = $res;
    }
}

/* End of file array_helper.php */